﻿Option Explicit On
Option Strict On
Imports System.Data.OleDb

'Documentación XML
''' <summary>
''' Esta clase almacena y gestiona los diferentes 
''' roles que podran adoptar los usuarios.
''' </summary>
''' <author> Jerón Fernández Caballero Rico</author>
''' <author> Daniel Morato Baudi</author>

Public Class Rol

    Public Enum TipoRol As Integer

        Administrador = 1
        UsuarioOperador = 2

    End Enum

    'Atributos
    Private _ID As String
    Private _Nombre As String
    Private _Tipo As TipoRol
    Private _PermisosDisponibles As Permisos

    'Constructor
    Public Sub New()

        Me._ID = ""
        Me._Nombre = ""
        Me._Tipo = 0
        Me._PermisosDisponibles = New Permisos

    End Sub

    ''' <param name="CampoBuscado">(String) Campo que queremos obtener de la base de datos.</param>
    ''' <param name="Filtro">(Opcional)(String) Filtro que aplicaremos a nuestra búsqueda.</param>
    ''' <returns>(OleDbDataReader)  Devuelve un objeto DataReader con los datos leídos.</returns>
    Public Function ConsultarBD(ByVal CampoBuscado As String, Optional ByVal Filtro As String = "") As OleDbDataReader

        Dim MiBD As New BaseDatos
        Dim DatosLeidos As OleDbDataReader

        If Filtro.Length > 0 Then
            DatosLeidos = MiBD.Leer("SELECT " & CampoBuscado & " FROM Rol WHERE " & Filtro)
        Else
            DatosLeidos = MiBD.Leer("SELECT " & CampoBuscado & " FROM Rol")
        End If

        Return DatosLeidos

    End Function

    'Get Set
    Public Property ID() As String
        Get
            Return Me._ID
        End Get
        Set(ByVal value As String)
            Me._ID = value
        End Set
    End Property
    Public Property Nombre() As String
        Get
            Return Me._Nombre
        End Get
        Set(ByVal value As String)
            Me._Nombre = value
        End Set
    End Property
    Public Property Tipo() As TipoRol
        Get
            Return Me._Tipo
        End Get
        Set(ByVal value As TipoRol)
            Me._Tipo = value
        End Set
    End Property
    Public Property PermisosDisponibles() As Permisos
        Get
            Return Me._PermisosDisponibles
        End Get
        Set(ByVal value As Permisos)
            Me._PermisosDisponibles = value
        End Set
    End Property

End Class